package main

import (
	"fmt"
	"io/ioutil"
	"net/http"
	"net/url"
)

func main() {
	// 发起http POST请求, 提交表单

	// 使用Values组织post请求参数
	params := url.Values{}
	params.Add("id", "1")
	params.Add("username", "tizi")
	params.Add("password", "123456")

	// PostForm请求自动将content-type设置为application/x-www-form-urlencoded
	resp, err := http.PostForm("http://api.baidu.com/user/creation", params)

	if err != nil {
		// 处理错误
	}
	// 请求处理完后，需要记得释放body资源
	defer resp.Body.Close()

	// 使用ReadAll函数，读取http请求内容，返回的是字节数组
	content, _ := ioutil.ReadAll(resp.Body)

	// 打印http请求结果
	fmt.Println(string(content))
}

/*
Post函数和PostForm用法类似，下面例子暂时差异部分

组织post参数，因为post函数接受的是一个实现io.Reader接口的对象
这里我使用string reader组织字符串参数
data := strings.NewReader("username=tizi&password=1234")

第二个参数是content-type， 需要自己设置
第三个参数是post请求的参数，接受实现io.Reader接口的对象
resp, err := http.Post("http://api.baidu.com/user/creation","application/x-www-form-urlencoded", data)
*/
